題目要求輸入一整數n並轉換為二進制,並打印連續出現1的最大次數。
5
1
(因為5的二進制為101,所以連續出現1的最大次數=1)
  
n = int(input())
numbers = bin(n)[2:].split('0') #因為轉換完前兩個字為'0b',所以從第三個數字開始
lenghts = [len(i) for i in numbers] #取每個元素的數量儲存成列表
print(max(lenghts))
如果將每個階段印出,以n=13為例,會長醬:
bin(13) = '0b1101'  #整數經過bin()之後會轉換成字串類型
numbers = ['11', '1'] #以0分隔,便會將連續的1分成一個個元素
lenghts = [2, 1]
max(lenghts) = 2
  
n = int(input())
numbers = ''
while True:
    a = n // 2
    b = n % 2
    numbers += str(b)
    n = a
    if n == 0:
        break
numbers = numbers.split('0')
lenghts = [len(i) for i in numbers]
print(max(lenghts))
  
  
【高中生 - a034: 二進位制轉換】
輸入:
輸入若干行直到 EOF (end of the file)為止。每一行包含一個十進位的整數。例:36
輸出:
針對每一行的整數輸出其二進位制的結果。例:11110
def transToBinary(n): #函數功能: 吃一個十進位的數字,回傳一個二進位表示的字串
    num = []
    while True:
        a = n // 2
        b = n % 2
        num += [str(b)]
        n = a
        if n == 0:
            break
    return ''.join(num[::-1])
while True:
    try:
        n = int(input())
        print(transToBinary(n))
    except:
        break
僅為個人解題筆記,可能有錯誤或未補充詳盡之處,歡迎不吝指教! 也歡迎正在自學的夥伴一起討論學習~共勉之^-^ 感謝閱讀!